#ifndef FUNCSIGMOID_H
#define FUNCSIGMOID_H

#include "funcModel.h"
namespace QPCRModel {

class funcSigmoid : public funcModel
{
public:
    funcSigmoid();

    double f(double x);
    double g(double y);

    double loss(double x, double y);
    double loss(double x, double y, const Eigen::VectorXd &X);


    double loss2(double x, double y);
    double loss2(double x, double y, const Eigen::VectorXd &X);

    double diff1(double x);
    double diff2(double x);

    Eigen::VectorXd jacobian(double x, double y);
    Eigen::VectorXd jacobian2(double x, double y);
    double curvity(double x, double norm_coef = 0);
    virtual void init(double SPE, double EPE, int cycleNum, double ymin, double ymax);


public:
    void setV(const Eigen::VectorXd &v);
    Eigen::VectorXd getV();
    std::pair<double, double> getRange(int i);

    int getParamNum();
    double getLinearStageFunc(double *lk, double *lb);


public:

};

}


#endif // FUNCSIGMOID_H
